﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;


using INSTA.BankApplication.DAL;
using NUnit.Framework;

namespace INSTA.BankApplication.DAL.Tests
{
    [TestFixture]
    public class Test_DbAccessorFactory
    {
        [Test]
        public void Test_Method_Create_ForSqlServer()
        {
            //1:    On écrit SqlServer dans la clé "DatabaseType" du fichier 
            //      app.config.
            ConfigFileManager.SetConfigFileDatabaseType(DatabaseTypeEnum.SqlServer.ToString());

            // Crée le DbAcessor.
            var accessor = DbAccessorFactory.Create(null);

            //Assert.IsTrue(accessor is SqlServerDbAccessor);
            Assert.IsInstanceOf<SqlServerDbAccessor>(accessor);

        }

        [Test]
        public void Test_Method_Create_ForMySql()
        {
            //1:    On écrit SqlServer dans la clé "DatabaseType" du fichier 
            //      app.config.
            ConfigFileManager.SetConfigFileDatabaseType(DatabaseTypeEnum.MySql.ToString());

            // Crée le DbAcessor.
            var accessor = DbAccessorFactory.Create(null);

            //Assert.IsTrue(accessor is SqlServerDbAccessor);
            Assert.IsInstanceOf<MySqlDbAccessor>(accessor);
        }

        [Test]
        public void Test_Method_Create_ForBadConfigFile()
        {
            //1:    On écrit une valeur bidon dans la clé "DatabaseType" du fichier 
            //      app.config.
            ConfigFileManager.SetConfigFileDatabaseType("Dummy");

            Assert.Throws<ConfigFileException>(() => DbAccessorFactory.Create(null));
        }

    }
}
